/*
 * mapOsm.java
 *
 * Copyright (C) 2008 Paul Nettleship
 *
 * This program is free software; you can redistribute it and/or modify
 * it under the terms of the GNU General Public License as published by
 * the Free Software Foundation; either version 2 of the License, or
 * (at your option) any later version.
 *
 * This program is distributed in the hope that it will be useful,
 * but WITHOUT ANY WARRANTY; without even the implied warranty of
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 * GNU General Public License for more details.
 *
 * You should have received a copy of the GNU General Public License
 * along with this program; if not, write to the Free Software
 * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
 * 
 */
package staticTrailExplorer;

import java.awt.image.BufferedImage;
import java.io.File;
import java.io.IOException;
import java.net.MalformedURLException;
import java.net.URL;
import javax.imageio.ImageIO;
import javax.swing.JOptionPane;

/**
 *
 * @author codebauer
 */
public class mapOsm implements mapDataIF
   {
   private tileMap map;
  
   public void init(tileMap map)
      {
      this.map = map;
      map.calibrated = true;
      }

   public void openInput(File phile)
      {
      }

   public void openOutput(File phile)
      {
      }

   public void close() throws IOException
      {
      }

   public location getDefaultStartLocation()
      {
      /* Start with europe */
      return new location(4,2,2);
      }
  
   public BufferedImage loadMapTile(location loc)
      {
      URL osm = null;
      int tileX = loc.getTileX(map);
      int tileY = loc.getTileY(map);
      int tileZ = loc.getZoom();
      if( ( tileX >= Math.pow(2, tileZ) ) || ( tileX < 0 ) ||
          ( tileY >= Math.pow(2, tileZ) ) || ( tileY < 0 )  )
         return null;
      try
         {
         osm = new URL("http://c.tile.openstreetmap.org/" + 
         //osm = new URL("http://tah.openstreetmap.org/Tiles/tile/" +
                       tileZ + "/" + tileX + "/" + tileY + ".png");
         return ImageIO.read(osm);
         }
      catch (MalformedURLException ex)
         {
         System.out.print(ex);
         ex.printStackTrace();
         System.out.print(osm);
         return null;
         }
      catch (IOException ex)
         {
         System.out.print(ex);
         ex.printStackTrace();
         System.out.print(osm);
         return null;
         }
      }

   public void saveMapTile(BufferedImage tile, location loc)
      {
      String text = "Can not save " + map.name + " not supported.\n";
      text += "Try selecting another window!";
      JOptionPane.showMessageDialog(null,text,"Warning",JOptionPane.PLAIN_MESSAGE);
      }

   public void setCalibration()
      {
      String text = "Can not calibrate. " + map.name + " already calibarated.\n";
      text += "Try selecting another window!";
      JOptionPane.showMessageDialog(null,text,"Warning",JOptionPane.PLAIN_MESSAGE);
      }

   }
